#ifndef CASE_UI_FACTORY_HPP
#define CASE_UI_FACTORY_HPP

#include "AbsUI/UIFactory.hpp"

/// @ingroup MiniCase
/// @brief It specializes the user interface factory, knowing exactly for each category of widgets and UI elements what 
///		class to instantiate.
class CaseUIFactory: public AbsUI::UIFactory
{
public:
	/// @brief It creates a CaseMainWindow instance.
	/// @sa AbsUI::UIFactory::createMainWindow();
	virtual AbsUI::MainWindow* createMainWindow();

	/// @sa AbsUI::UIFactory::createConnConfigWidget( const std::string& )
	virtual AbsUI::ConnectionConfigurationWidget* createConnConfigWidget( const std::string& typeName);

	/// @sa AbsUI::UIFactory::createProjectBrowserWidget( const std::string&)
	virtual AbsUI::ProjectBrowserWidget* createProjectBrowserWidget( const Storage::ConnectionConfig& connectionConfig);
};

#endif // CASE_UI_FACTORY_HPP
